package com.lmn.oval;

import net.sf.oval.configuration.annotation.Constraint;

import java.lang.annotation.*;

/**
 * @version 4.0
 * @describe: 校验字符串是否非法
 * @author: houkai
 * @Date: 2019/1/15 10:11
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD})
@Constraint(
        checkWith = StringCheckImpl.class
)
public @interface StringCheck {

    /**
     * 错误码
     */
    String errorCode() default "This is an error code";

    /**
     * 错误信息
     */
    String message() default "The string is illegal";

    /**
     * 关联约束
     */
    String[] profiles() default {};

    /**
     * 严重的传递给constraintviolation对象
     */
    int severity() default 0;

    /**
     * 应用于从该对象中指定对象图中的位置
     */
    String target() default "";

    /**
     * 如果该约束将被验证则返回true；如果当前的验证被忽略，则false。
     */
    String when() default "";

    /**
     * 最大长度，默认32
     */
    int max() default 32;

    /**
     * 最小长度，默认0
     */
    int min() default 0;

    /**
     * 是否不能为空，默认false， true：校验非空， false：忽略</br>
     * 如果为 true,则字符串为以下值时的校验结果</br>
     * ""    抛出异常 </br>
     * null  抛出异常 </br>
     * "  "  抛出异常 </br>
     * " a " 正常 </br>
     * "a"   正常 </br>
     */
    boolean notNull() default false;
}
